home *** CD-ROM | disk | FTP | other *** search
- 10 ! **********************************************************
- 20 ! Example: TOGGLEBUTTON Widget
- 30 !
- 40 ! This program uses a TOGGLEBUTTON widget. It provides a
- 50 ! row of TOGGLEBUTTONS and lists the button and its state
- 60 ! as the button is pressed.
- 70 !
- 80 ! **********************************************************
- 90 !
- 100 ! Define colors:
- 110 !
- 120 INTEGER Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
- 130 DATA 0,1,2,3,4,5,6,7
- 140 READ Black,White,Red,Yellow,Green,Cyan,Blue,Magenta
- 150 !
- 160 INTEGER Sts ! Gets TOGGLEBUTTON value
- 170 DIM V1$[1],V2$[1],V3$[1]! Converts value to string
- 180 !
- 190 INTEGER Nlines,D(1:4) ! Used for display handling
- 200 INTEGER Dw,Dh ! Gives display size
- 210 INTEGER X,Y,Pw,Ph,Iw,Ih! PANEL parameters
- 220 INTEGER R1,R2,C1,C2,C3! Coordinates for widgets
- 230 INTEGER Bh,Bw,Lw ! Widget sizes
- 240 !
- 250 STATUS CRT,13;Nlines
- 260 GESCAPE CRT,3;D(*)
- 270 Dw=D(3)-D(1)
- 280 Dh=(D(4)-D(2))*((Nlines-7)/Nlines)
- 290 !
- 300 Ph=170 ! Interior height
- 310 Pw=280 ! Interior width
- 320 X=(Dw-Pw)/2 ! Center panel on screen
- 330 Y=(Dh-Ph)/2
- 340 !
- 350 CLEAR SCREEN
- 360 ASSIGN @Panel TO WIDGET "PANEL";SET ("VISIBLE":0)
- 370 CONTROL @Panel;SET ("MAXIMIZABLE":0,"RESIZABLE":0)
- 380 CONTROL @Panel;SET ("X":X,"Y":Y,"WIDTH":Pw,"HEIGHT":1.2*Ph)
- 390 CONTROL @Panel;SET ("TITLE":" Example: TOGGLEBUTTON Widget")
- 400 CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
- 410 !
- 420 ! Determine inside dimensions of PANEL
- 430 !
- 440 STATUS @Panel;RETURN ("INSIDE WIDTH":Iw,"INSIDE HEIGHT":Ih)
- 450 !
- 460 Gaph=Ih*.04
- 470 Gapw=Iw*.03
- 480 Bh=(Ih-3*Gaph)/2! Button height
- 490 Bw=(Iw-4*Gapw)/3! Button width
- 500 R1=Gaph ! Top row
- 510 R2=R1+Bh+Gaph! Row 2 = row 1 + button height + gap
- 520 C1=Gapw ! Left column
- 530 C2=C1+Bw+Gapw! Col 2 = col 1 + button width + gap
- 540 C3=C2+Bw+Gapw! Col 3 = col 2 + button width + gap
- 550 Lw=Bw*3+Gapw*2! Label width = 3 buttons plus gaps
- 560 !
- 570 ! Set up TOGGLEBUTTONS
- 580 !
- 590 ASSIGN @T1 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
- 600 CONTROL @T1;SET ("X":C1,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
- 610 CONTROL @T1;SET ("PEN":Blue)
- 620 CONTROL @T1;SET ("LABEL":"T1")
- 630 !
- 640 ASSIGN @T2 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
- 650 CONTROL @T2;SET ("X":C2,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
- 660 CONTROL @T2;SET ("PEN":Blue)
- 670 CONTROL @T2;SET ("LABEL":"T2")
- 680 !
- 690 ASSIGN @T3 TO WIDGET "TOGGLEBUTTON";PARENT @Panel
- 700 CONTROL @T3;SET ("X":C3,"Y":R1,"WIDTH":Bw,"HEIGHT":Bh)
- 710 CONTROL @T3;SET ("PEN":Blue)
- 720 CONTROL @T3;SET ("LABEL":"T3")
- 730 !
- 740 ! Create LABEL widget
- 750 !
- 760 ASSIGN @Label TO WIDGET "LABEL";PARENT @Panel
- 770 CONTROL @Label;SET ("X":C1,"Y":R2,"WIDTH":Lw,"HEIGHT":Bh)
- 780 CONTROL @Label;SET ("PEN":Red)
- 790 !
- 800 ! Set up events
- 810 !
- 820 ON EVENT @T1,"CHANGED" GOSUB Handler
- 830 ON EVENT @T2,"CHANGED" GOSUB Handler
- 840 ON EVENT @T3,"CHANGED" GOSUB Handler
- 850 ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
- 860 !
- 870 ! Turn on PANEL
- 880 !
- 890 GOSUB Handler
- 900 CONTROL @Panel;SET ("VISIBLE":1)
- 910 !
- 920 ! Main loop, wait for event
- 930 !
- 940 LOOP
- 950 WAIT FOR EVENT
- 960 END LOOP
- 970 STOP
- 980 !
- 990 ! Handlers for buttons
- 1000 !
- 1010 Handler:!
- 1020 STATUS @T1;RETURN ("VALUE":Sts)
- 1030 V1$=VAL$(Sts)
- 1040 STATUS @T2;RETURN ("VALUE":Sts)
- 1050 V2$=VAL$(Sts)
- 1060 STATUS @T3;RETURN ("VALUE":Sts)
- 1070 V3$=VAL$(Sts)
- 1080 CONTROL @Label;SET ("VALUE":"T1:"&V1$&" / T2:"&V2$&" / T3:"&V3$)
- 1090 RETURN
- 1100 !
- 1110 Finis:!
- 1120 ASSIGN @Panel TO *! Delete PANEL widget
- 1130 END
-